import getLoginUser from 'gdt-jsapi/getLoginUser';
import getDeviceId from 'gdt-jsapi/getDeviceId';
import { nextTick } from '@tarojs/taro';
import { history } from '@tarojs/router';

/**
 * 用户信息埋点
 */
function _userInfo() {
  // 如采集用户信息是异步行为需要先执行这个BLOCK埋点
  window.aplus_queue.push({
    action: 'aplus.setMetaInfo',
    arguments: ['_hold', 'BLOCK'],
  });
  // 设置用户ID，用户设备ID可不做上报，若上报可使用开放平台JSAPI获取UUID
  //用户id需要埋政钉用户真实信息，用户ID必须用accountId，可通过开放平台“获取用户详情”接口获取。
  getLoginUser().then((res) => {
    window.aplus_queue.push({
      action: 'aplus.setMetaInfo',
      arguments: ['_user_id', res.accountId],
    });
  });
  getDeviceId().then((res) => {
    window.aplus_queue.push({
      action: 'aplus.setMetaInfo',
      arguments: ['_dev_id', res.deviceId],
    });
  });
  // 如采集用户信息是异步行为，需要先设置完用户信息后再执行这个START埋点
  // 此时被block住的日志会携带上用户信息逐条发出
  window.aplus_queue.push({
    action: 'aplus.setMetaInfo',
    arguments: ['_hold', 'START'],
  });
}

/**
 * 路由埋点
 */
function _router() {
  nextTick(() => {
    history.listen(({ location }) => {
      // 单页应用 或 “单个页面”需异步补充PV日志参数还需进行如下埋点：
      window.aplus_queue.push({
        action: 'aplus.setMetaInfo',
        arguments: ['aplus-waiting', 'MAN'],
      });
      // 单页应用路由切换后 或 在异步获取到pv日志所需的参数后再执行sendPV：
      window.aplus_queue.push({
        action: 'aplus.sendPV',
        arguments: [
          {
            is_auto: false,
          },
          {
            // 当前你的应用信息，此两行请勿修改
            sapp_id: '40269',
            sapp_name: 'JNGA_HGY',
            page_id: location.pathname,
            page_url: location.pathname,
            page_name: document.title,
          },
        ],
      });
    });
  });
}

/**
 * 初始化
 */
function init() {
  (function () {
    window['aplus_queue'] = window['aplus_queue'] || [];
    const f = document.getElementsByTagName('script')[0];
    const j = document.createElement('script');
    j.async = true;
    j.id = 'beacon-aplus';
    j.src = `https://alidt.alicdn.com/alilog/mlog/aplus_cloud.js`;
    f.parentNode?.insertBefore(j, f);
  })();

  window.aplus_queue.push({
    action: 'aplus.setMetaInfo',
    arguments: ['aplus-rhost-v', 'alog-api.ding.zj.gov.cn'],
  });
  window.aplus_queue.push({
    action: 'aplus.setMetaInfo',
    arguments: ['aplus-rhost-g', 'alog-api.ding.zj.gov.cn'],
  });

  var u = navigator.userAgent;
  var isAndroid = u.indexOf('Android') > -1;
  var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);

  window.aplus_queue.push({
    action: 'aplus.setMetaInfo',
    arguments: ['appId', isAndroid ? '28302650' : isIOS ? '28328447' : '47130293'],
  });

  if ('h5RemoteDebugSdk' in window) {
    window.h5RemoteDebugSdk.init({
      uuid: 'd788d3ec-2741-47de-98ac-d269625fe979',
      observerElement: document.documentElement,
    });
  }

  _userInfo();
  _router();
}

if (process.env.APP_EDITION === 'hgy' && process.env.TARO_ENV === 'h5') init();
